回到Android程式碼的部份,主要是建立SQLite資料庫的實體檔案及執行建立資料表的SQL,最後將更新的資料,更新到資料庫。完整的程式碼,如下:
在看更新程式碼之前,要先在列表Activity,要先建立ListView的onItemClick事件的觸發程式碼,才能取得列表資料的資料欄位_id,才能帶到更新Activity來當更新的主鍵。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    //取得按下ListView的那個Item的值。
    TextView txtid = (TextView) view.findViewById(android.R.id.text1);
    //prc_showmessage("id:" + txtid.getText().toString() + " " );
    //按下Item時,要呼叫編輯的Activity,利用Intent物件帶參數過去。
    Intent it = new Intent();
    it= new Intent(this,frm_cust_edit.class);
    it.putExtra("pid",txtid.getText().toString());
    startActivity(it);
    //關閉本身的Activity。
    this.finish();
}
更新Activity完整的程式碼:
public class frm_cust_edit extends AppCompatActivity {
    //宣告物件
    private SQLiteDatabase db = null;
    private EditText txt_name;
    private EditText txt_phone;
    private TextView lbl_id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_frm_cust_edit);
        txt_name = (EditText)findViewById(R.id.txtname);
        txt_phone = (EditText)findViewById(R.id.txtphone);
        lbl_id = (TextView)findViewById(R.id.lblid);
        //建立SQLite 資料庫的實體檔案
        db = openOrCreateDatabase("cust.db", Context.MODE_PRIVATE,null);
        //建立資料表的SQL語法
        String strcreatedb = "CREATE TABLE IF NOT EXISTS " +
                "tcustomer (_id INTEGER PRIMARY KEY, cname TEXT, ctel TEXT) ";
        //執行SQL語法,建立資料表
        db.execSQL(strcreatedb);
        //再取得編輯的資料。
        Intent it2 = getIntent();
        String strcustid = it2.getStringExtra("pid");
        //查詢資料
        Cursor cursor = db.rawQuery("SELECT * FROM tcustomer where _id=" + strcustid ,null);
        int int_id = 0;
        String strcname = "";
        String strctel = "";
        //如果查詢有資料的話,就跟ListView做連結
        if (cursor != null && cursor.getCount() >=0)
        {
            while (cursor.moveToNext()) {
                int_id = cursor.getInt(0);
                strcname = cursor.getString(1);
                strctel = cursor.getString(2);
            }
        }
        txt_name.setText(strcname);
        txt_phone.setText(strctel);
        lbl_id.setText(String.valueOf(int_id));
    }
    public void prc_btnupdate(View v)
    {
//        String strinsertsql = "INSERT INTO tcustomer (cname,ctel) values " +
//                "('" + txt_name.getText().toString() + "','" + txt_phone.getText().toString() + "')";
//
//        db.execSQL(strinsertsql);
        String strupdatesql = "UPDATE tcustomer SET " +
                "cname='" + txt_name.getText().toString() + "', " +
                "ctel='" + txt_phone.getText().toString() + "' " +
                "WHERE _id=" + lbl_id.getText();
        db.execSQL(strupdatesql);
        //完成新增後,要呼叫列表的Activity,利用Intent物件。
        Intent it = new Intent();
        it= new Intent(this,frm_cust_list.class);
        startActivity(it);
        //關閉本身的Activity。
        this.finish();
    }
    public void prc_cancel(View v)
    {
        //按下「取消」,就呼叫列表的Activity,利用Intent物件。
        Intent it = new Intent();
        it= new Intent(this,frm_cust_list.class);
        startActivity(it);
        //關閉本身的Activity。
        this.finish();
    }
}
執行出來的輸入畫面,如下圖所示:
回到列表,完成資料的更新。
 
在更新資料時,我們為了要帶出資料欄位的_id,而讓它是出現在表單中,這樣不是很好,所以,我今天有找到下述的屬性,來讓它可以隱藏,請參考之。
時間真是過的真快,一下就過三十天了,不過,我後續也是繼續寫下去,當然,就不是天天更新了。
這段日子,謝謝大家的收看。